<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>26.使用访问器保护数据</title>
</head>

<body>
  <script>
    // getter 方法用于获得属性值，setter 方法用于设置属性，这是 JS 提供的存取器特性即使用函数来管理属性。

    // - 用于避免错误的赋值
    // - 需要动态监测值的改变
    // - 属性只能在访问器和普通属性任选其一，不能共同存在

    const user = {
      data: { name: '后盾人', age: null },
      set age (value) {
        if(typeof value != 'number' || value < 10 ||value >100){
          throw new Error('年龄格式错误');
        }
        this.data.age = value;
      },
      get age () {
        return this.data.age+"岁";
      }
    };
    user.age = 87; //调用了set
    console.log(user.age); // 调用了 get
  </script>
</body>

</html>